<!DOCTYPE HTML>
<html>
<head>
<title>StringReplace | AutoHotkey</title>
<meta name="description" content="The StringReplace command replaces the specified substring with a new string." />
<meta name="ahk:equiv-v2" content="commands/StrReplace.htm" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>StringReplace</h1>
<p>用新字符串替换指定的子字符串.</p>
<p class="warning"><strong>过时的:</strong> 不推荐在新脚本中使用此命令. 请使用 <a href="StrReplace.htm">StrReplace</a> 函数代替.</p>
<pre class="Syntax"><span class="func">StringReplace</span>, OutputVar, InputVar, SearchText <span class="optional">, ReplaceText, ReplaceAll</span></pre>

<h2 id="Parameters">参数</h2>
<dl>

  <dt>OutputVar</dt>
  <dd>用来存储替换后的新字符串的变量名.</dd>

  <dt>InputVar</dt>
  <dd>需要被读取内容的变量名. 不要把名称括在百分号中, 除非您希望使用变量的 <em>内容</em> 作为被解析的变量名.</dd>

  <dt>SearchText</dt>
  <dd>要搜索的字符串. 如果没有启用 <a href="StringCaseSense.htm">StringCaseSense</a>, 那么匹配过程不区分大小写.</dd>

  <dt>ReplaceText</dt>
  <dd>用来替换 <em>SearchText</em> 的文本. 如果省略或为空, 那么 <em>SearchText</em> 会被替换为空. 换句话说, 它会被从 <em>OutputVar</em> 删除.</dd>

  <dt>ReplaceAll</dt>
  <dd>
      <p>如果省略, 那么只替换 <em>SearchText</em> 的首个匹配. 如果此参数为 1, A 或 All, 那么替换所有匹配.</p>
      <p>指定单词 <strong>UseErrorLevel</strong>  可以把替换的次数保存到 ErrorLevel(没有则为 0). UseErrorLevel 包含了 "All" 的作用.</p>
  </dd>

</dl>

<h2 id="ErrorLevel">ErrorLevel</h2>
<p>当最后一个参数为 <em>UseErrorLevel</em> 时, <a href="../misc/ErrorLevel.htm">ErrorLevel</a> 中会保存替换的次数(没有则为 0). 否则, 如果在 <em>InputVar</em> 中没有找到 <em>SearchText</em> 则 ErrorLevel 被置为 1, 找到则置为 0.</p>

<h2 id="Remarks">备注</h2>
<p>在这个及其他所有命令中,<em>OutputVar</em> 和 <em>InputVar</em> 中可以使用相同的变量.</p>
<p>内置变量 <a href="../Variables.htm">%A_Space%</a> 和 <a href="../Variables.htm">%A_Tab%</a> 分别包含了单个空格和单个 tab 字符. 当您需要搜索单独的空格或 tab 或在 <em>SearchText</em> 的开始或末尾含有空格或 tab 时, 这很有用.</p>
<p><span class="ver">[v1.0.45+]</span>: 为了改善性能和内存的利用率, AllSlow 选项已经作废. 尽管仍可以指定它, 但不会有效果.</p>

<h2 id="Related">相关</h2>
<p><a href="StrReplace.htm">StrReplace()</a>, <a href="RegExReplace.htm">RegExReplace()</a>, <a href="IfInString.htm">IfInString</a>, <a href="StringCaseSense.htm">StringCaseSense</a>, <a href="StringLeft.htm">StringLeft</a>, <a href="StringLeft.htm">StringRight</a>, <a href="StringMid.htm">StringMid</a>, <a href="StringTrimLeft.htm">StringTrimLeft</a>, <a href="StringTrimLeft.htm">StringTrimRight</a>, <a href="StringLen.htm">StringLen</a>, <a href="StringLower.htm">StringLower</a>, <a href="StringLower.htm">StringUpper</a>, <a href="StringGetPos.htm">StringGetPos</a>,  <a href="IfIs.htm">if var is type</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExClipboard">
<p><a class="ex_number" href="#ExClipboard"></a> 移除剪贴板内容中所有的 CR+LF.</p>
<pre>StringReplace, Clipboard, Clipboard, `r`n, , All</pre>
</div>

<div class="ex" id="ExVar">
<p><a class="ex_number" href="#ExVar"></a> 用加号替换所有空格.</p>
<pre>StringReplace, NewStr, OldStr, %A_Space%, +, All</pre>
</div>

<div class="ex" id="ExRemoveBlankLines">
<p><a class="ex_number" href="#ExRemoveBlankLines"></a> 移除变量文本中所有空行.</p>
<pre>Loop
{
    StringReplace, MyString, MyString, `r`n`r`n, `r`n, UseErrorLevel
    if (ErrorLevel = 0)  <em>; 不需要再进行替换.</em>
        break
}</pre>

</body>
</html>